package com.xbongbong.saas.domain.dao;

import com.xbongbong.saas.domain.entity.FormDataDraftEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 表单草稿DAO
 *
 * @author GuoJun.HU
 * @date 2019/2/19 19:13
 * @since V1.0
 */
@Repository
@Mapper
public interface FormDataDraftDao {

    /**
     * 插入数据
     *
     * @param formDataDraftEntity 草稿实体数据
     * @author GuoJun.HU
     * @date 2019/2/19 19:13
     * @since v1.0
     */
    Integer insert(FormDataDraftEntity formDataDraftEntity);

    /**
     * 批量插入数据
     *
     * @param formDataDraftEntities 草稿实体数据列表
     * @author GuoJun.HU
     * @date 2019/2/19 19:13
     * @since v1.0
     */
    void insertBatch(@Param("list") List<FormDataDraftEntity> formDataDraftEntities);

    /**
     * 批量删除数据
     *
     * @param idList 草稿实体数据id列表
     * @author GuoJun.HU
     * @date 2019/2/19 19:13
     * @since v1.0
     */
    void deleteBatch(@Param("list") List<Long> idList);

    /**
     * 更新数据
     *
     * @param formDataDraftEntity 草稿实体数据
     * @author GuoJun.HU
     * @date 2019/2/19 19:13
     * @since v1.0
     */
    Integer update(FormDataDraftEntity formDataDraftEntity);

    /**
     * 根据id查询数据
     *
     * @param key    主键
     * @param corpid 公司ID
     * @author GuoJun.HU
     * @date 2019/2/19 19:13
     * @since v1.0
     */
    FormDataDraftEntity getByKey(@Param("key") Long key, @Param("corpid") String corpid);

    /**
     * 根据主键删除草稿
     *
     * @param key
     * @param corpid
     * @return java.lang.Integer
     * @author GuoJun.HU
     * @date 2019/2/19 19:13
     */
    Integer deleteByKey(@Param("key") Long key, @Param("corpid") String corpid);

    /**
     * 根据参数查询草稿实体集合
     *
     * @param param 查询条件
     * @return java.util.List<com.xbongbong.saas.domain.entity.PaymentEntity>
     * @author GuoJun.HU
     * @date 2019/2/19 19:13
     */
    List<FormDataDraftEntity> findEntitys(@Param("param") Map<String, Object> param);

    /**
     * 根据查询条件查询实体个数
     *
     * @param param 查询条件
     * @return 满足条件实体个数
     * @author GuoJun.HU
     * @date 2019/2/19 19:13
     */
    Integer getEntitysCount(@Param("param") Map<String, Object> param);
}
